Linux 终端基础知识#8:移动文件和文件夹 |
您所在的位置:网站首页 › linux 移动 › Linux 终端基础知识#8:移动文件和文件夹 |
Linux 终端基础知识#8:移动文件和文件夹
在终端基础知识系列的第八章中,了解如何在 Linux 中使用 mv 命令移动文件和目录。 剪切、复制和粘贴是日常计算生活的一部分。 在上一章中,您学习了如何在终端中复制文件和文件夹(目录)。 在终端基础知识系列的这一部分中,您将了解 Linux 终端中的剪切粘贴操作(移动)。 移动还是剪切粘贴?好吧!剪切粘贴在这里不是正确的技术术语。这称为移动文件(和文件夹)。 由于您是命令行新手,您可能会发现术语“移动”令人困惑。 当您使用cp命令将文件复制到另一个位置时,源文件仍保留在同一位置。 当您使用 mv 命令将文件移动到另一个位置时,源文件将不再保留在原始位置。 这与您在图形文件资源管理器中执行的剪切粘贴操作(Ctrl+X 和 Ctrl+V)相同。 基本上,在命令行中移动文件可以被认为与图形环境中的剪切粘贴相同。 移动文件Linux 有一个专用的 mv 命令(move 的缩写),用于将文件和目录移动到其他位置。 使用 mv 命令非常简单: mv source_file destination_directory路径的作用在这里也发挥了作用。您可以使用绝对路径或相对路径。无论哪个适合您的需要。 让我们通过一个例子来看看。 您应该通过在系统上复制示例场景来进行练习。 这是示例中的目录结构: abhishek@linux-console:~/moving_files$ tree . ├── dir1 │ ├── file_2 │ └── file_3 ├── dir2 │ └── passwd ├── dir3 ├── file_1 ├── file_2 ├── file_3 ├── file_4 ├── passwd └── services 3 directories, 9 files现在,假设我想将 file_1 移动到 dir3。 mv file_1 dir3移动多个文件您可以在同一 mv 命令中将多个文件移动到另一个位置: mv file1 file2 fileN destination_directory让我们继续我们的示例场景来移动多个文件。 mv file_2 file_3 file_4 dir3将文件从 dir3 移回当前目录。我们在接下来的示例中需要它们。 小心移动文件如果目的地已有同名文件,则目的地文件将立即被替换。有时,您不会想要这样。 与 cp 命令一样,mv 命令也具有带有选项 -i 的交互模式。 而且目的是一样的。在替换目标位置的文件之前请求确认。 abhishek@linux-console:~/moving_files$ mv -i file_3 dir1 mv: overwrite 'dir1/file_3'?您可以按 N 拒绝替换,按 Y 或 Enter 替换目标文件。 移动但仅更新mv 命令带有一些特殊选项。其中之一是更新选项-u。 这样,只有当正在移动的文件比目标文件新时,目标文件才会被替换。 mv -u file_name destination_directory这是一个例子。 file_2 于 10:39 修改,file_3 于 10:06 修改。 abhishek@linux-console:~/moving_files$ ls -l file_2 file_3 -rw-rw-r-- 1 abhishek abhishek 0 Apr 4 10:39 file_2 -rw-rw-r-- 1 abhishek abhishek 0 Apr 4 10:06 file_3在目标目录dir1中,file_2的最后修改时间为10:37,file_3的最后修改时间为10:39。 abhishek@linux-console:~/moving_files$ ls -l dir1 total 0 -rw-rw-r-- 1 abhishek abhishek 0 Apr 4 10:37 file_2 -rw-rw-r-- 1 abhishek abhishek 0 Apr 4 10:39 file_3换句话说,在目标目录中,file_2 比要移动的目录旧,file_3 比要移动的目录新。 这也意味着 file_3 不会被移动,而 file_2 将被更新。运行 mv 命令后,您可以通过目标目录中文件的时间戳进行验证。 abhishek@linux-console:~/moving_files$ mv -u file_2 file_3 dir1 abhishek@linux-console:~/moving_files$ ls -l dir1 total 0 -rw-rw-r-- 1 abhishek abhishek 0 Apr 4 10:39 file_2 -rw-rw-r-- 1 abhishek abhishek 0 Apr 4 10:39 file_3 abhishek@linux-console:~/moving_files$ date Tue Apr 4 10:41:16 AM IST 2023 abhishek@linux-console:~/moving_files$可以看到,move命令是在10:41执行的,只有file_2的时间戳发生了变化。 您还可以使用备份选项-b。如果目标文件被替换,它将自动创建具有 filename~ 模式的备份。 故障排除:目标不是目录如果要移动多个文件,最后一个参数必须是目录。否则,你会遇到这个错误: target is not a directory在这里,我创建了一个名为 dir 的文件。名字听起来像一个目录,但它是一个文件。当我尝试将多个文件移动到其中时,出现明显的错误: 但是如果将一个文件移动到另一个文件怎么办?在这种情况下,目标文件将被源文件的内容替换,同时源文件将重命名为目标文件。稍后部分将详细介绍这一点。 移动目录到目前为止,您已经了解了有关移动文件的所有内容。移动目录怎么样? cp 和 rm 命令使用 reusrive 选项 -r 分别复制和删除文件夹。 然而,mv 命令没有这样的要求。您可以使用 mv 命令来移动目录。 mv dir target_directory下面是我将 dir2 目录移动到 dir3 的示例。正如您所看到的,dir2 及其内容被移动到 dir3。 您可以用相同的方式移动多个目录。 重命名文件和目录如果要重命名文件或目录,可以使用相同的 mv 命令。 mv filename new_name_in_same_or_new_location假设您要重命名同一位置的文件。以下是我在同一目录中将 file_1 重命名为 file_one 的示例。 您还可以移动和重命名文件。您只需提供目标的目录路径和文件名。在这里,我将 services 文件重命名为 my_services,同时将其移动到 dir3。 abhishek@linux-console:~/moving_files$ ls dir dir1 dir3 file_2 file_3 file_one passwd services abhishek@linux-console:~/moving_files$ mv services dir3/my_services abhishek@linux-console:~/moving_files$ ls dir3 dir2 my_services您不能直接使用 mv 命令重命名多个文件。您必须将其与其他命令(例如 find 等)结合起来。 测试你的知识是时候练习你刚刚学到的东西了。 创建一个新文件夹来练习。在这里,创建一个像这样的目录结构: . ├── dir1 ├── dir2 │ ├── dir21 │ ├── dir22 │ └── dir23 └── dir3将文件 /etc/passwd 复制到当前目录。现在将其重命名为 secrets。 创建三个新文件,分别命名为 file_1、file_2 和 file_3。将所有文件移至 dir22。 现在将 dir22 目录移动到 dir3。 现在删除 dir2 的所有内容。 在终端基础知识系列的倒数第二章中,您将了解如何在终端中编辑文件。敬请关注。 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |